Client side caching of printer configuration

ABSTRACT

A server-client system is configured to store, on a client, server configuration information relating to a peripheral device connected at the client and parameter settings for the peripheral device. The information is updated as changes occur. After the client has been disconnected from the system and the peripheral device uninstalled, the peripheral device is automatically installed and the parameter settings restored without requiring significant user interaction when the client reconnects. The automatic installation and restoring is performed even if the client is connected to a different server than it was originally.

TECHNICAL FIELD

This invention relates to server-client systems and, in particular, to aserver-client system in which system configuration information for aserver is stored on a client.

BACKGROUND

In a typical server-client system, a server computer is connected toseveral client computers or terminals via a network. In suchserver-client systems, applications are executed at the server ratherthan at the client. The server transmits display information to theclient for display at the client, and user inputs (e.g., via keyboard ormouse) at the client are transmitted to the server for processing by anapplication(s) executing at the server. The “client” may be an entireclient computer, or alternatively an application executing at the clientcomputer.

A server in such a system typically has an operating system that can runseveral client sessions concurrently. Each client user has access tovarious resources of the server, including the processor, data storage,application programs, etc. Software applications that are resident onthe server are available to each client for independent execution by theclient. Each session is independent from the other sessions and,therefore, one client cannot access information relating to anotherclient. In this manner, the server provides a logically independentmachine for each client connected to the server.

Client users frequently use peripheral devices at the client machines.For example, a user may wish to attach a printer to the user's clientcomputer (a “local” printer) in order to print data generated by anapplication that is running on the server computer. To do this, the usermust manually install the local printer and redirect the printer queuecreated by the server to the I/O port of the client computer to whichthe printer is connected. Such manual installation of peripheral devicesis undesirable because it requires significant time and effort on thepart of the user.

A co-pending application (U.S. patent application No. ______) entitled“Automatic Detection And Installation Of Client Peripheral Devices By AServer”, to Tad Brockway, Madan Appiah, Adam Overton, and Ritu Bahl,filed concurrently herewith, describes a system in which peripheraldevices attached to the client are automatically detected andcorresponding device drivers installed at the server.

However, not all client peripheral devices can be automatically detectedand installed. For example, if a printer is an older model that wasmanufactured before automatic detection technology was developed, itwill not generate an identifier signal that is recognizable by theclient or the server. Or, if the attached printer is a newer model butthe client runs an older operating system that does not recognize thenewer model printer or that does not have automatic peripheral detectioncapability, such as Windows® 3.1, it is necessary for the user tomanually install the printer on the server.

A major drawback of this situation is that the printer must be installedeach time the client connects to the server. For example, if a userinstalls a client printer on a server and subsequently disconnects theclient from the server, the server configuration information relating tothe printer is deleted. When the user reconnects to the server, the usermust manually install the same printer again.

Adding to this inconvenience is the fact that if the user desires tooperate the printer utilizing printer parameter settings that aredifferent from the default settings, the user must also change theparameter settings each time the user connects to the server. Forinstance, if the default paper tray is the letter-size tray but the useralways uses the legal-size paper tray, the user will have to set thepaper tray parameter every time the user connects to a server andinstalls the printer.

The technology described below addresses these disadvantages, as itprovides for client-side caching of server configuration information aswell as peripheral device parameter settings. When the client isreconnected to a server after having been disconnected from a serversession, the cached information is automatically transmitted to theserver, where it is restored. The client user is thus relieved of theburden of having to manually install the printer or reset its parametersettings every time the client is connected to a server.

SUMMARY

A server-client environment provides for client-side caching ofinformation related to a peripheral device so that the client mayautomatically restore the information to a server upon connection orreconnection with the server. Peripheral devices that may be connectedto the client include printers, scanners, card readers, zip drives, etc.For discussion purposes, reference herein will be made to a printer.After the printer is initially configured on the server, subsequentinstallations are automatic. The client user is thus relieved fromhaving to manually install the printer each time the user connects to aserver.

It is noted that the term “install” has different meanings in the art.In a hardware context, “install” refers to physically connecting aperipheral device to a computer. In a software context, “install” refersto installing the software related to a connected peripheral device. Ifthe peripheral device is a printer, a printer driver is installed and aprinter queue is created. Unless otherwise noted, the term “install” asused herein means installing software that is related to a connectedperipheral device. The peripheral device is physically connected to theclient, but the software related to the peripheral device is installedon the server.

In a server/client environment, there may be no means for automaticdetection and installation of peripheral devices, such as a printer,that are attached at the client. If so, then a client user must manuallyinstall a printer driver to render the printer operational. The userinteraction required to install and configure the printer on the serverare performed at the client, but the printer is installed on the server.

After the printer is manually installed on the server from the client,the portion of the server configuration that relates to the printer issent to the client, where it is stored. In addition, printer parametersettings are sent to the server where they are returned to the clientfor storing with the server configuration information. When theserver/client session in which the printer has been installed isterminated, the printer configuration on the server is deleted.

It is also noted that the technology as described herein may beimplemented in a server/client system in which client peripheral devicesare automatically detected and installed according to the methoddescribed in the above-referenced co-pending application. Utilizing thepresent technology in such a system provides the advantages describedherein.

Subsequent installations are automatic, regardless of whether the clientis connected to the same server or to a different server, or whether theinitial installation was manual or automatic. When the connection isestablished, the client sends the cached server configuration andprinter settings data to the server. The server utilizes this data torestore the printer configuration and printer settings to the state inwhich they were in prior to the termination of the session. The processis performed automatically, requiring little, if any, user interaction.Therefore, after the initial installation, the client user is providedwith automatic printer installation on the client for that particularprinter, and the previous printer settings are automatically restored.In addition, the installation and restoration are automatic even if theclient (and printer) connects to a different server.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings. The same numbersare used throughout the figures to reference like components and/orfeatures.

FIG. 1 is a diagrammatic illustration of a server/client system.

FIG. 2 is a block diagram of a server/client system.

FIG. 3 is a flow diagram of a method for client-side caching of serverconfiguration information and automatic installation of a peripheraldevice.

FIG. 4 is a flow diagram of a method for client-side caching of printerparameter settings and updating same.

DETAILED DESCRIPTION

FIG. 1 shows a server/client computer system 30 having a server 32, afirst client 34 and a second client 36 interconnected via a network 38.The server 32 and the clients 34, 36 have modems or network cards, whichfacilitate access (direct or otherwise) to the network 38 so that theserver 32 and the clients 34, 36 can exchange information over thenetwork 38. The clients 34, 26 each have a desktop 40, 42 interfacedisplayed. In this embodiment, the server 32 and the clients 34, 36 areconventional computers.

It is noted that, although the server/client computer system 30 depictedin FIG. 1 has a first client 34 and a second client 36, there may be oneto any number of clients connected to the server 32. The number ofclients that may be connected to a server is limited only by thearchitecture of a particular server.

The server 32 is configured to provide a logically independent machinefor each client 34, 36 connected to the network 38. That is, the server32 establishes a session for each client 34, 36, provides the desktop40, 42 for each client 34, 36, and makes server resources available toeach client 34, 36. Such resources include, but are not limited to,allocations of processor time, memory, data storage, video processing,application programs, etc. A user of either of the clients 34, 36interacts with the desktop 40, 42 on the client 34, 36 to run softwareapplications that reside on the server 32. While the user provides inputto and receives output from the client 34, 36, most processing isperformed at the server 32.

The network 38 provides a communications link between the server 32 andthe clients 34, 36 through which data is transmitted. The network 38 maybe a local area network (LAN), a wide area network (WAN), the Internet,or the like, provided that it can accommodate server/clientfunctionality.

FIG. 2 shows a server/client system 50 having a server 52 and a client54. The server 52 includes a processor 56 and memory 58. The server 52also has a network port 60, which facilitates access to the network 38.The network port 60 may be implemented as a modem, network card, orother device that interfaces the server 52 to the network 38.

The server 52 can be implemented as a common personal computer or othertype of computer, such as a laptop computer, etc. The server 52 runs anoperating system 62 which is stored in memory 58 and executes on theprocessor 56. The operating system 62 is a multitasking operating systemsuch as a Windows® brand operating system from Microsoft Corporation(e.g., Windows® 98, Windows® 95, Windows® NT, or other derivative ofWindows®)). However, other operating systems may be used.

The server 52 has a printing subsystem 64 implemented in the operatingsystem 62 stored in memory 58. The printing subsystem 62 is used todirect all operations involving printers and printing, includinginstalling printers, creating and managing printer queues, removingprinters, uninstalling printers, etc. The printing subsystem includes aconfiguration tracking unit 66 that is configured to monitor serverconfiguration with regard to client peripheral devices that areinstalled on the server 52. This aspect of the printing subsystem 64will be discussed in greater detail below.

The server 52 is shown having a printer driver 70 and a printer queue 72installed and resident within the memory 58. It is noted, however, thatthe server 52 will only include the printer driver 70 and the printerqueue 72 when a printer has been connected to the system 50 andinstalled on the server 52. The printer driver 70 is a printer-specificsoftware program that provides an interface between a printer and theserver 52 and allows the server 52 to provide print functions via aprinter. When the printer driver 70 is installed on the server 52, theprinter queue 72 is created. The printer queue 72 accepts print jobsfrom the server 52 and queues them for printing. It is noted that if theperipheral device is a device other than a printer, the printer driverwill be a device driver for that peripheral device, if a device driveris required by the peripheral device.

The server 52 may also include a redirected printer port 74. Theredirected printer port 74 is a virtual port created by the server 52 inthe event that the server is unable to identify and install a compatibledriver for a client-side printer. The redirected printer port 74 isexposed by the server and can be attached to a printer queue usingstandard printer queue creation techniques.

It is also noted that, although one printer driver 70 and one printerqueue 72 are shown in the memory 58, there may be more than one printerdriver or more than one printer queue 72 stored in the memory58—corresponding to different client sessions. Also, the printer driver70 and the printer queue 72 shown are accessible only for the sessionestablished for the client 54. The memory 58 may contain other printerdrivers and printer queues that are installed for other sessionsexecuting on the server 52. Printer drivers and printer queues installedfor other sessions on the server 52 are not available for access by theclient 54.

The client 54 includes memory 76, a processor 78, and an I/O port 80having a printer 82 connected thereto. Although the client 54 is shownas having only one I/O port 80, it is noted that the client 54 mayinclude more than one I/O port. The printer 82 has multiple printersettings 84, such as paper size, paper orientation, printing quality,etc. Printer settings 84′ is a copy of the printer settings 84 that arestored in the memory 76 of the client 54 via a method that will bediscussed in detail below. The memory 76 also stores serverconfiguration information 86. The server configuration information 86 isdata monitored by the configuration tracking unit 66 of server 52.

As previously noted, the configuration tracking unit 66 of server 52 isconfigured to monitor server configuration information relating toclient peripheral devices that are installed on the server 52. In theillustrated example of a printer, such configuration informationincludes, but is not limited to, data associated with the printer driver70, the printer queue 72, the redirected printer port 74, the printersettings 84, the I/O port 80 to which the printer 82 is connected, etc.

The server sends this configuration information 86 to the client 54,where it is stored in memory 76. The configuration information 86related to the installation of the printer 82 is therefore readilyavailable in the event that the configuration information 86 is requiredto be restored on the server 52. If the configuration information 86subsequently needs to be restored on the server 52, the configurationinformation 86 is simply transmitted from the client 54 to the server52.

The configuration tracking unit 66 is configured to detect new deviceinstallations, and can also detect when a peripheral device is removedfrom a system, and when a system user renames an I/O queue associatedwith a device. For example, if the printer 82 is removed from thesystem, or if the client user wishes to manually delete the printerqueue 72 from the system 50, the client 54 sends notification to theserver 52 to remove the printer 82. In response, the server removes alldata structures related to the printer 82 (e.g., printer driver 70 andprinter queue 72) from the server. The server will then send updatedserver configuration information 86 to the client 54, where it is storedin memory 76. When the updated information 86 is stored in the memory 76of the client 54, it simply overwrites the old information.

Likewise, if a user renames the printer queue 72, the server will sendupdated server configuration information 86 to the client 54, where itis stored in memory 76.

Similar to the server 52, the client 54 also has a network port 88 tofacilitate access to the network 38. The network port 88 may beimplemented as a modem, network card, or other device which interfacesthe client 54 to the network 38.

FIG. 3 is a flow diagram depicting a method for client-side caching ofserver configuration information and printer settings, and forautomatically installing a peripheral device upon subsequent connectionto a server. The method is described with continuing reference to FIGS.1 and 2.

At step 200 in FIG. 3, the client 54 sends a request to the server 52 toinstall the printer 82 on the server 52. At this time, or immediatelythereafter, the printer settings 84 are also sent to the server 52. Whenthe server 52 receives the install request from the client 54, theserver performs a manual installation of the printer 82 on the server 52at step 202. Manual installation refers to a client user being requiredto identify the printer driver 70 associated with the printer 82 as wellas the I/O port 80 to which the printer 82 is connected. The serverprompts the user for this information through the I/O interface ofclient 54.

When the installation is complete, the configuration tracking unit 66 ofthe printing subsystem 64 sends server configuration information 86 tothe client (step 204). At step 206, the client 54 stores the serverconfiguration information 86 and the printer settings 84 in the memory76.

When the client session has concluded, the client 54 is disconnectedfrom the server 52 (step 208). Whenever the client 54 is disconnectedfrom the server 52, all data structures associated with peripheraldevices attached to the client 52 are deleted from the server 52.

At step 210, the client 54 is reconnected to the server 52. It is notedthat, although the client 54 in this example is reconnected to theserver 52, the client 54 may be connected to a different server (notshown) in another server/client system (not shown). The methodology isthe same whether the client 54 is connected to the server 52 or to adifferent server (not shown). This is another advantage to the presentinvention in that, once the printer 82 is manually installed on theserver 52, subsequent installations—whether they be on the server 52 oron another server (not shown)—are automatic.

Upon reconnection with the server 52, the client 54 transmits the serverconfiguration information 86 that was stored during the previousconnection, to the server 52. The printer settings 84 are also sent tothe server 52. At step 212, the server 52 utilizes the serverconfiguration information 86 received from the client 54 toautomatically install the printer 82 on the server 52. This automaticinstallation is performed with minimal user interaction.

Once the printer 82 has been automatically installed on the server, theconfiguration tracking unit 66 of the server 52 sends the serverconfiguration information 86 and the printer settings 84′ to the client54 (step 214). Upon receipt of this data, at step 216, the client 52stores the server configuration information 86 and the printer settings84 in memory 76.

FIG. 4 is a flow diagram depicting a method for client-side caching ofserver configuration information and printer settings, and forautomatically updating peripheral device settings on the server. Themethod is described with continuing reference to FIG. 1 and FIG. 2. Itis noted that the method of FIG. 4 is performed contemporaneously withthe method described in FIG. 3. However, for discussion purposes, themethods are described separately.

At step 300 in FIG. 4, the client 54 sends a request to the server 52 toinstall the printer 82 on the server 52. At this time, or immediatelythereafter, the printer settings 84 are also sent to the server 52. Whenthe server 52 receives the install request from the client 54, theserver performs a manual installation of the printer 82 on the server 52at step 302. Manual installation refers to a client user being requiredto identify the printer driver 70 associated with the printer 82 as wellas the I/O port 80 to which the printer 82 is connected.

When the installation is complete, the configuration tracking unit 66 ofthe printing subsystem 64 sends server configuration information 86 tothe client (step 304). At step 306, the client 54 stores the serverconfiguration information 86 and the printer settings 84′ in the memory76.

At step 308, the system 50 detects if the user makes any changes to theprinter settings 84. If so, the changed printer settings 84 are sent tothe server 52 at step 310. At step 314, the server 52 receives theupdated printer settings 84. The updated printer settings 84 are sent tothe client 54 at step 316. The client 54 then stores the updated printersettings 84 at step 316.

As described in the discussion for FIG. 3, the printer settings 84′ aresent from the client 54 to the server 52 when the client 54 isreconnected to the server 52. By updating the cached printer settings84′ as they are updated by the user, the desired printer settings 84 arealways restored when the client 54 is reconnected to the server 52.

CONCLUSION

The system and method as described herein provide a user with a way toautomatically install peripheral devices on a server after they havebeen redirected on the server one time from a client. In addition, theuser's device settings preferences are preserved from session tosession, thereby saving the user from having to manually update thesesettings whenever a server-client connection is established. Once amanual installation has been performed, subsequent installations areautomatic, whether the client is reconnected to the same server, or to adifferent server.

Although the invention has been described in language specific tostructural features and/or methodological steps, it is to be understoodthat the invention defined in the appended claims is not necessarilylimited to the specific features or steps described. Rather, thespecific features and steps are disclosed as preferred forms ofimplementing the claimed invention.

1-46. (Cancelled).
 47. A system that facilitates installing a peripheraldevice, comprising: a first computer that executes an application andhas software installed thereupon related to a peripheral device, whichis utilized with the application; a second computer that is coupled tothe peripheral device and stores information, which is related to theinstallation of the peripheral device, that is received from the firstcomputer, the information is utilized to reinstall the peripheraldevice.
 48. The system of claim 47, the first computer deletes theinstalled software upon disconnection with the second computer.
 49. Thesystem of claim 48, further comprising: the second computer transmitsthe information to the first computer; and the first computer receivesthe information and utilizes the information to reinstall the softwarerelated to the peripheral device.
 50. The system of claim 48, furthercomprising: the second computer transmits the information to a disparatethird computer; and the disparate third computer receives theinformation and utilizes the information to install the software relatedto the peripheral device.
 51. The system of claim 47, the information isutilized to automatically reinstall the peripheral device.
 52. Thesystem of claim 47, the information is at least one of data associatedwith a driver, a queue, settings of the peripheral device, an I/O portof the second computer that communicates with the peripheral device, anda redirected peripheral port of the first computer.
 53. The system ofclaim 47, further comprising: the first computer retransmits updatedinformation upon alteration of peripheral device settings; and thesecond computer receives and stores the updated information.
 54. Thesystem of claim 47, the peripheral device comprises a printer.
 55. Thesystem of claim 47, the second computer is coupled to the peripheraldevice via at least one of a wired connection and a wireless connection.56. The system of claim 47, the first computer comprises a configurationtracking unit that monitors a configuration of the first computerrelated to the installed peripheral device.
 57. The system of claim 47,the software related to the peripheral device is initially installedautomatically on the first computer.
 58. The system of claim 47, thesoftware related to the peripheral device is initially installedmanually on the first computer via the second computer.
 59. A systemthat facilitates restoring configuration information of a peripheraldevice on a first computer, comprising: a configuration tracking unitthat detects installation of a peripheral device on the first computer,the peripheral device is coupled to a disparate computer and is utilizedwith an application that executes via the first computer; and atransmitter that sends configuration information associated with theinstallation to the disparate computer where the configurationinformation is stored.
 60. The system of claim 59, the configurationtracking unit further detects when the peripheral device is removed andfacilitates uninstalling of the peripheral device from the computer. 61.The system of claim 60, the configuration tracking unit further detectsreinstallation of the peripheral device and receives the configurationinformation stored on the disparate computer, which is utilized forreinstallation.
 62. The system of claim 59, the configuration trackingunit further identifies alterations associated with the installation ofthe peripheral device on the first computer.
 63. The system of claim 62,the transmitter further sends updated configuration information to thedisparate computer to be stored.
 64. A system that facilitatesinstalling a peripheral device, comprising: an I/O port that couples toa peripheral device that is utilized with an application which isexecuted on a disparate computer; a receiver that obtains configurationinformation related to the peripheral device; and a data store thatstores the configuration information.
 65. The system of claim 64,further comprising a transmitter that sends the configurationinformation to the disparate computer to reinstall the peripheraldevice.
 66. The system of claim 64, further comprising a transmitterthat sends the configuration information to a second disparate computerto install the peripheral device.
 67. The system of claim 64, thereceiver further obtains updated configuration information whenalterations are made to the configuration of the peripheral device. 68.A system that facilitates installation of a peripheral device,comprising: means for transmitting configuration information, which isrelated to a peripheral device, from a first computer that executes anapplication that utilizes the peripheral device to a second computerthat is coupled to the peripheral device; and means for storing theconfiguration information on the second computer.
 69. The system ofclaim 68, further comprising means for uninstalling the peripheraldevice from the first computer.
 70. The system of claim 69, furthercomprising: means for transmitting the configuration information fromthe second computer to the first computer; and means for reinstallingthe peripheral device on the first computer utilizing the configurationinformation.
 71. The system of claim 70, further comprising: means fortransmitting the configuration information from the second computer to athird computer; and means for installing the peripheral device on thethird computer utilizing the configuration information.
 72. The systemof claim 71, further comprising means for updating the configurationinformation stored on the second computer via retransmitting the alteredconfiguration information.
 73. A method for facilitating installation ofa peripheral device, comprising: installing support on a first computerfor a peripheral device attached at a second computer; transmittingconfiguration information related to the peripheral device from thefirst computer to the second computer; and storing the transmittedconfiguration information at the second computer.
 74. The method ofclaim 73, further comprising transmitting the configuration informationfrom the second computer to the first computer upon reconnection of thesecond computer and the first computer.
 75. The method of claim 73,further comprising: disconnecting the second computer from the firstcomputer; establishing a new connection between the second computer andthe first computer; transmitting the configuration information stored atthe second computer to the first computer; and automatically restoringthe support for the peripheral device at the first computer utilizingthe transmitted configuration information.
 76. The method of claim 73,further comprising: disconnecting the second computer from the firstcomputer; establishing a new connection between the second computer anda disparate third computer; transmitting the configuration informationstored at the second computer to the disparate third computer; andautomatically installing support for the peripheral device on thedisparate third computer utilizing the transmitted configurationinformation.
 77. The method of claim 73, further comprising:transmitting peripheral device settings of the peripheral device fromthe second computer to the first computer upon the establishment of aconnection between the second computer and the first computer;transmitting the peripheral device settings from the first computer tothe second computer together with the configuration information; andstoring the peripheral device settings at the second computer.
 78. Themethod of claim 77, further comprising retransmitting the peripheraldevice settings from the second computer to the first computer uponalteration of the peripheral device settings.
 79. The method of claim73, further comprising: uninstalling support for the peripheral device;transmitting updated configuration information from the first computerto the second computer, the updated configuration information indicatesthat support for the peripheral device at the first computer has beenuninstalled; and removing the stored configuration information at thefirst computer.